home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / gfx / show / MerlinGfx.lha / hrgrender.h < prev    next >
C/C++ Source or Header  |  1995-06-07  |  10KB  |  324 lines

  1. #ifndef _INLINE_HRGRENDER_H
  2. #define _INLINE_HRGRENDER_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct Library * HRGRenderBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME HRGRenderBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. /* Falsche FD/proto-Argumente !
  24.  
  25.     hrCvtRGB2PACKED8 gets 3 fd args and 1 proto.
  26.     hrDithRGB2PACKED8 gets 5 fd args and 3 protos.
  27. */
  28.  
  29. extern __inline UBYTE
  30. hrBestColor( BASE_PAR_DECL struct HRBitMap *hrbm, ULONG col)
  31. {
  32.     BASE_EXT_DECL
  33.     register UBYTE _res __asm("d0");
  34.     register struct Library *a6 __asm("a6") = BASE_NAME;
  35.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  36.     register ULONG d0 __asm("d0") = col;
  37.     __asm __volatile ("jsr a6@(-0x66)"
  38.     : "=r" (_res)
  39.     : "r" (a6), "r" (a0), "r" (d0)
  40.     : "d0", "d1", "a0", "a1");
  41.     return _res;
  42. }
  43. extern __inline void
  44. hrClearToCol( BASE_PAR_DECL struct HRBitMap *hrbm, ULONG color )
  45. {
  46.     BASE_EXT_DECL
  47.     register struct Library *a6 __asm("a6") = BASE_NAME;
  48.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  49.     register ULONG d0 __asm("d0") = color;
  50.     __asm __volatile ("jsr a6@(-0x7e)"
  51.     : /* no output */
  52.     : "r" (a6), "r" (a0), "r" (d0)
  53.     : "d0", "d1", "a0", "a1");
  54. }
  55. extern __inline ULONG
  56. hrCvtRGB2TARGA (BASE_PAR_DECL UBYTE r, UBYTE g, UBYTE b)
  57. {
  58.     BASE_EXT_DECL
  59.     register ULONG _res __asm("d0");
  60.     register struct Library *a6 __asm("a6") = BASE_NAME;
  61.     register UBYTE d0 __asm("d0") = r;
  62.     register UBYTE d1 __asm("d1") = g;
  63.     register UBYTE d2 __asm("d2") = b;
  64.     __asm __volatile ("jsr a6@(-0x36)"
  65.     : "=r" (_res)
  66.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  67.     : "d0", "d1", "a0", "a1", "d2");
  68.     return _res;
  69. }
  70. extern __inline UBYTE
  71. hrCvtRGBA2PACKED8 (BASE_PAR_DECL ULONG col)
  72. {
  73.     BASE_EXT_DECL
  74.     register UBYTE _res __asm("d0");
  75.     register struct Library *a6 __asm("a6") = BASE_NAME;
  76.     register ULONG d0 __asm("d0") = col;
  77.     __asm __volatile ("jsr a6@(-0x54)"
  78.     : "=r" (_res)
  79.     : "r" (a6), "r" (d0)
  80.     : "d0", "d1", "a0", "a1");
  81.     return _res;
  82. }
  83. extern __inline ULONG
  84. hrCvtRGBA2TARGA (BASE_PAR_DECL ULONG col)
  85. {
  86.     BASE_EXT_DECL
  87.     register ULONG _res __asm("d0");
  88.     register struct Library *a6 __asm("a6") = BASE_NAME;
  89.     register ULONG d0 __asm("d0") = col;
  90.     __asm __volatile ("jsr a6@(-0x3c)"
  91.     : "=r" (_res)
  92.     : "r" (a6), "r" (d0)
  93.     : "d0", "d1", "a0", "a1");
  94.     return _res;
  95. }
  96. extern __inline ULONG
  97. hrDithRGB2TARGA (BASE_PAR_DECL ULONG x, ULONG y, UBYTE r, UBYTE g, UBYTE b)
  98. {
  99.     BASE_EXT_DECL
  100.     register ULONG _res __asm("d0");
  101.     register struct Library *a6 __asm("a6") = BASE_NAME;
  102.     register ULONG d0 __asm("d0") = x;
  103.     register ULONG d1 __asm("d1") = y;
  104.     register UBYTE d2 __asm("d2") = r;
  105.     register UBYTE d3 __asm("d3") = g;
  106.     register UBYTE d4 __asm("d4") = b;
  107.     __asm __volatile ("jsr a6@(-0x42)"
  108.     : "=r" (_res)
  109.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4)
  110.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4");
  111.     return _res;
  112. }
  113. extern __inline UBYTE
  114. hrDithRGBA2PACKED8 (BASE_PAR_DECL ULONG x, ULONG y, ULONG col)
  115. {
  116.     BASE_EXT_DECL
  117.     register UBYTE _res __asm("d0");
  118.     register struct Library *a6 __asm("a6") = BASE_NAME;
  119.     register ULONG d0 __asm("d0") = x;
  120.     register ULONG d1 __asm("d1") = y;
  121.     register ULONG d2 __asm("d2") = col;
  122.     __asm __volatile ("jsr a6@(-0x60)"
  123.     : "=r" (_res)
  124.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  125.     : "d0", "d1", "a0", "a1", "d2");
  126.     return _res;
  127. }
  128. extern __inline ULONG
  129. hrDithRGBA2TARGA (BASE_PAR_DECL ULONG x, ULONG y, UBYTE r , UBYTE g, UBYTE b)
  130. {
  131.     BASE_EXT_DECL
  132.     register ULONG _res __asm("d0");
  133.     register struct Library *a6 __asm("a6") = BASE_NAME;
  134.     register ULONG d0 __asm("d0") = x;
  135.     register ULONG d1 __asm("d1") = y;
  136.     register UBYTE d2 __asm("d2") = r;
  137.     register UBYTE d3 __asm("d3") = g;
  138.     register UBYTE d4 __asm("d4") = b;
  139.     __asm __volatile ("jsr a6@(-0x48)"
  140.     : "=r" (_res)
  141.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4)
  142.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4");
  143.     return _res;
  144. }
  145. extern __inline BOOL
  146. hrDoDither( BASE_PAR_DECL struct HRBitMap *hrbm, BOOL flag )
  147. {
  148.     BASE_EXT_DECL
  149.     register BOOL _res __asm("d0");
  150.     register struct Library *a6 __asm("a6") = BASE_NAME;
  151.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  152.     register BOOL d0 __asm("d0") = flag;
  153.     __asm __volatile ("jsr a6@(-0x1e)"
  154.     : "=r" (_res)
  155.     : "r" (a6), "r" (a0), "r" (d0)
  156.     : "d0", "d1", "a0", "a1");
  157.     return _res;
  158. }
  159. extern __inline BOOL
  160. hrDrawLine( BASE_PAR_DECL struct HRBitMap *hrbm,
  161.                 ULONG x0, ULONG y0,
  162.                 ULONG x1, ULONG y1, ULONG col )
  163. {
  164.     BASE_EXT_DECL
  165.     register BOOL _res __asm("d0");
  166.     register struct Library *a6 __asm("a6") = BASE_NAME;
  167.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  168.     register ULONG d0 __asm("d0") = x0;
  169.     register ULONG d1 __asm("d1") = y0;
  170.     register ULONG d2 __asm("d2") = x1;
  171.     register ULONG d3 __asm("d3") = y1;
  172.     register ULONG d4 __asm("d4") = col;
  173.     __asm __volatile ("jsr a6@(-0x30)"
  174.     : "=r" (_res)
  175.     : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4)
  176.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4");
  177.     return _res;
  178. }
  179. extern __inline void
  180. hrFillRect( BASE_PAR_DECL struct HRBitMap *hrbm,
  181.                                     ULONG xpos, ULONG ypos,
  182.                                     ULONG width, ULONG height,
  183.                                     ULONG color )
  184. {    BASE_EXT_DECL
  185.     register struct Library *a6 __asm("a6") = BASE_NAME;
  186.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  187.     register ULONG d0 __asm("d0") = xpos;
  188.     register ULONG d1 __asm("d1") = ypos;
  189.     register ULONG d2 __asm("d2") = width;
  190.     register ULONG d3 __asm("d3") = height;
  191.     register ULONG d4 __asm("d4") = color;
  192.     __asm __volatile ("jsr a6@(-0x84)"
  193.     :
  194.     : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4)
  195.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4");
  196. }
  197. extern __inline ULONG
  198. hrGetPixel( BASE_PAR_DECL struct HRBitMap *hrbm, ULONG x, ULONG y )
  199. {
  200.     BASE_EXT_DECL
  201.     register ULONG _res __asm("d0");
  202.     register struct Library *a6 __asm("a6") = BASE_NAME;
  203.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  204.     register ULONG d0 __asm("d0") = x;
  205.     register ULONG d1 __asm("d1") = y;
  206.     __asm __volatile ("jsr a6@(-0x2a)"
  207.     : "=r" (_res)
  208.     : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  209.     : "d0", "d1", "a0", "a1");
  210.     return _res;
  211. }
  212. extern __inline void
  213. hrReadRectRGB( BASE_PAR_DECL struct HRBitMap *hrbm,
  214.                                         UBYTE *rdat, UBYTE *gdat, UBYTE *bdat,
  215.                                         ULONG xpos,        ULONG ypos,
  216.                                         ULONG width,    ULONG height,
  217.                                         ULONG pixmod,    ULONG rowmod )
  218. {    BASE_EXT_DECL
  219.     register struct Library *a6 __asm("a6") = BASE_NAME;
  220.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  221.     register UBYTE *a1 __asm("a1") = rdat;
  222.     register UBYTE *a2 __asm("a2") = gdat;
  223.     register UBYTE *a3 __asm("a3") = bdat;
  224.     register ULONG d0 __asm("d0") = xpos;
  225.     register ULONG d1 __asm("d1") = ypos;
  226.     register ULONG d2 __asm("d2") = width;
  227.     register ULONG d3 __asm("d3") = height;
  228.     register ULONG d4 __asm("d4") = pixmod;
  229.     register ULONG d5 __asm("d5") = rowmod;
  230.     __asm __volatile ("jsr a6@(-0x8a)"
  231.     :
  232.     : "r" (a6), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4), "r" (d5)
  233.     : "d0", "d1", "a0", "a1", "a2", "a3", "d2", "d3", "d4", "d5");
  234. }
  235. extern __inline void
  236. hrSetPixel( BASE_PAR_DECL struct HRBitMap *hrbm, ULONG x, ULONG y, ULONG col )
  237. {
  238.     BASE_EXT_DECL
  239.     register struct Library *a6 __asm("a6") = BASE_NAME;
  240.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  241.     register ULONG d0 __asm("d0") = x;
  242.     register ULONG d1 __asm("d1") = y;
  243.     register ULONG d2 __asm("d2") = col;
  244.     __asm __volatile ("jsr a6@(-0x24)"
  245.     :
  246.     : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
  247.     : "d0", "d1", "a0", "a1", "d2" );
  248. }
  249. extern __inline void
  250. hrWriteBitMap( BASE_PAR_DECL struct HRBitMap *hrbm, struct BitMap *bmp,
  251.                     ULONG XPosDest, ULONG YPosDest,
  252.                     ULONG XPosSrc,  ULONG YPosSrc,
  253.                     ULONG WidthSrc, ULONG HeightScr, ULONG Mode )
  254. {
  255.     BASE_EXT_DECL
  256.     register struct Library  *a6 __asm("a6") = BASE_NAME;
  257.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  258.     register struct BitMap   *a1 __asm("a1") = bmp;
  259.     register ULONG d0 __asm("d0") = XPosDest;
  260.     register ULONG d1 __asm("d1") = YPosDest;
  261.     register ULONG d2 __asm("d2") = XPosSrc;
  262.     register ULONG d3 __asm("d3") = YPosSrc;
  263.     register ULONG d4 __asm("d4") = WidthSrc;
  264.     register ULONG d5 __asm("d5") = HeightScr;
  265.     register ULONG d6 __asm("d6") = Mode;
  266.     __asm __volatile ("jsr a6@(-0x6c)"
  267.     :
  268.     : "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4), "r" (d5), "r" (d6)
  269.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4", "d5", "d6");
  270. }
  271. extern __inline void
  272. hrWriteRectPK8( BASE_PAR_DECL struct HRBitMap *hrbm, UBYTE *dat,
  273.                                         ULONG xdest, ULONG ydest,
  274.                                         ULONG width, ULONG height,
  275.                                         ULONG pixoff, ULONG rowmod )
  276. {    BASE_EXT_DECL
  277.     register struct Library  *a6 __asm("a6") = BASE_NAME;
  278.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  279.     register UBYTE *a1 __asm("a1") = dat;
  280.     register ULONG d0 __asm("d0") = xdest;
  281.     register ULONG d1 __asm("d1") = ydest;
  282.     register ULONG d2 __asm("d2") = width;
  283.     register ULONG d3 __asm("d3") = height;
  284.     register ULONG d4 __asm("d4") = pixoff;
  285.     register ULONG d5 __asm("d5") = rowmod;
  286.     __asm __volatile ("jsr a6@(-0x78)"
  287.     :
  288.     : "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4), "r" (d5)
  289.     : "d0", "d1", "a0", "a1", "d2", "d3", "d4", "d5");
  290. }
  291. extern __inline void
  292. hrWriteRectRGB( BASE_PAR_DECL struct HRBitMap *hrbm,
  293.                      UBYTE *rdat, UBYTE *gdat, UBYTE *bdat,
  294.                      ULONG xdest, ULONG ydest, ULONG width,
  295.                      ULONG height, ULONG pixmod,
  296.                      ULONG rowmod )
  297. {    BASE_EXT_DECL
  298.     register struct Library *a6 __asm("a6") = BASE_NAME;
  299.     register struct HRBitMap *a0 __asm("a0") = hrbm;
  300.     register UBYTE *a1 __asm("a1") = rdat;
  301.     register UBYTE *a2 __asm("a2") = gdat;
  302.     register UBYTE *a3 __asm("a3") = bdat;
  303.     register ULONG d0 __asm("d0") = xdest;
  304.     register ULONG d1 __asm("d1") = ydest;
  305.     register ULONG d2 __asm("d2") = width;
  306.     register ULONG d3 __asm("d3") = height;
  307.     register ULONG d4 __asm("d4") = pixmod;
  308.     register ULONG d5 __asm("d5") = rowmod;
  309.     __asm __volatile ("jsr a6@(-0x72)"
  310.     :
  311.     : "r" (a6), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (d4), "r" (d5)
  312.     : "d0", "d1", "a0", "a1", "a2", "a3", "d2", "d3", "d4", "d5");
  313. }
  314.  
  315. #undef BASE_EXT_DECL
  316. #undef BASE_EXT_DECL0
  317. #undef BASE_PAR_DECL
  318. #undef BASE_PAR_DECL0
  319. #undef BASE_NAME
  320.  
  321. __END_DECLS
  322.  
  323. #endif /* _INLINE_HRGRENDER_H */
  324.